//! \file Gui.h
//! \brief TODO: Document
// -----------------------------------------------------------------------------
//! This program is free software; you can redistribute it and/or
//! modify it under the terms of the GNU General Public License
//! as published by the Free Software Foundation; either version 2
//! of the License, or (at your option) any later version.
//!
//! This program is distributed in the hope that it will be useful,
//! but WITHOUT ANY WARRANTY; without even the implied warranty of
//! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//! GNU General Public License for more details.
//!
//! You should have received a copy of the GNU General Public License
//! along with this program; if not, write to the Free Software Foundation,
//! Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
// -----------------------------------------------------------------------------
#ifndef dGUI_H_
#define dGUI_H_

#include "GuiError.h"

//#ifdef __cplusplus
//  extern "C" {
//#endif

// TODO: document
// Note: singleton class.
class GUI
{
  public:

    // Members

    // Methods
    static GUI& getSingleton();
    static GUI* getSingletonPtr();
    static tERROR start(void);
    static tERROR stop(tERROR Error);

  private:

    // Singleton
    static GUI* m_pGui;                 // (Singleton) Instance.
    GUI() {};                           // (Singleton) Private so that it can  not be called
    GUI(GUI const&);                    // (Singleton) Don't implement.
    GUI& operator=(GUI const&);         // (Singleton) Don't implement.

    // Members
    static bool m_IsRunning;

    // Methods
    static void *run(void *Arg);
    static tERROR initialize(void);

    static void createElements(void);

    static void render(void);


//    static tERROR Init(void);
//    static tERROR InitSDL(void);
//    static tERROR InitOpenGL(void);
//    static tERROR InitCEGUI(void);
};

//  #ifdef __cplusplus
//    }
//  #endif

#endif // dGUI_H_
